1 REM=================================== 2 REM 3 REM FLOATING POINT CONVERTER 4 REM RUPERT REPORT #60 5 REM 6 REM=================================== 10 PRINT"[147]FLOATING POINT CONVERTER" 15 PRINT "========================" 20 X0=SQR(36) :REM: X0 MUST BE FIRST VARIABLE 30 SP$=" "+CHR$(13) 40 DEF FNPTR(M)=PEEK(M)+256*PEEK(M+1) 60 FALSE=0: TRUE=NOT FALSE: C64=FALSE 70 IF FRE(0)=FRE(1) THEN C64=TRUE 80 VP=47: IF C64 THEN VP=45 :REM START VARIABLES POINTER 90 SV=FNPTR(VP) :REM START VARIABLES 100 S1=SV+2: S2=SV+3: S3=SV+4: S4=SV+5: S5=SV+6 :REM STORAGE AREA FOR X0 110 IF NOT C64 THEN (null) 1 200 REM ========= FP TO STORED VALUES == 210 PRINT "(X TO SWITCH MODES; Q TO QUIT)" 220 PRINT "ENTER FLOATING PT. VALUE :" 225 INPUT X$: IF X$="" THEN 260 230 IF X$="Q" THEN END 240 IF X$="X" THEN PRINT "[145][145][145]";SP$;SP$;"[145][145][145]": GOTO 310 250 X0=VAL(X$) 260 V1=PEEK(S1): V2=PEEK(S2): V3=PEEK(S3): V4=PEEK(S4): V5=PEEK(S5) 270 GOSUB 1010 280 GOTO 210 300 REM ========= STORED VALUES TO FP == 310 PRINT: PRINT "(X TO SWITCH MODES; Q TO QUIT)" 320 PRINT "ENTER 5 STORED VALUES (0 TO 255) : " 330 INPUT "FIRST VALUE";X1$: V1=VAL(X1$) 340 IF X1$="X" THEN PRINT "[145][145][145]";SP$;SP$;SP$;"[145][145][145][145]": GOTO 210 350 IF X1$="Q" THEN END 360 INPUT "2ND VALUE";X2$: V2=VAL(X2$) 370 INPUT "3RD VALUE";X3$: V3=VAL(X3$) 380 INPUT "4TH VALUE";X4$: V4=VAL(X4$) 390 INPUT "5TH VALUE";X5$: V5=VAL(X5$) 400 POKE S1,V1: POKE S2,V2: POKE S3,V3: POKE S4,V4: POKE S5,V5 410 GOSUB 1010 420 GOTO 310 1000 REM ===== CONVERSION & OUTPUT ===== 1010 PRINT V1; V2; V3; V4; V5 1020 REM -- EXPONENT, MANTISSA, SIGN -- 1030 EX=V1-128 1040 MN=(((V5/256+V4)/256+V3)/256 + (128 OR V2))/256 1050 SN=1: IF V2 >= 128 THEN SN=-1 1060 PRINT ""; SN*MN; "[146]* 2^"; EX; "[146] = "; X0; "[146]": PRINT 1070 RETURN